Federatedユーザのコンソールセッション有効期限を12hまで伸ばせるようになりました
西澤です。地味ですが、ADFS等のSSOログインを利用している人に嬉しいアップデートがありましたので、ご紹介します。
このリリースにより、Federatedユーザが利用できるAWS Management Consoleセッションの有効期限がこれまでの最大1hから12hまで延長することができるようになりました。長文のAWSサポートへの問い合わせ文を書いている途中にセッションが切れてしまい、涙を飲んだことが何度あったことでしょうか。ADFSをSAML Identity Providerとして利用する方法は下記ブログをご覧頂き、まだお試しで無い方はぜひお試しください。
- Active Directory資産を活用したAWS Management ConsoleへのSSO | Developers.IO
- ADFS利用による複数AWSアカウントへのSSO | Developers.IO
ADFS利用時のコンソールセッション有効期限を変更する
こちらも先にご紹介したAWSブログ内に画面付きで紹介されていますが、念の為、設定してみましょう。構築済のADFS環境がありましたので、今回は以下の環境で試してみました。
- Windows Server 2012 R2 日本語
- ADFS 3.0
まずは、AWS Management Consoleログイン用に作成した"証明書利用者信頼"を右クリックして、"要求規則の編集"をクリックします。
"規則の追加"をクリックします。
"カスタム規則を使用して要求を送信"を選択して、"次へ"をクリックします。
AWSブログの記載に習って下記のように入力して"完了"をクリックします。今回は、有効期限を8h(60608=28800)で設定してみました。名前は任意のもので問題ありません。また、有効期限は、15m(6015=900)から、12h(6060*12=43200)まで、の範囲で指定が可能です。
- 要求規則名=SessionDuration
=> issue(Type = "https://aws.amazon.com/SAML/Attributes/SessionDuration", Value = "28800");
設定が完了したら、ADFSサービスを再起動しておきましょう。
PS C:\> Restart-Service adfssrv 警告: サービス 'Active Directory Federation Services (adfssrv)' の停止を待っています... 警告: サービス 'Active Directory Federation Services (adfssrv)' の停止を待っています... 警告: サービス 'Active Directory Federation Services (adfssrv)' の停止を待っています... 警告: サービス 'Active Directory Federation Services (adfssrv)' の停止を待っています...
以上で設定は完了です。画面上から有効期限を確認する方法は見つけられませんでした(良い方法があれば教えてください)が、AWS Management Consoleが1hを超えてもセッションが維持されることが確認できました。
強制的にセッションを切断する
一度発行した一時クレデンシャルの有効期限は後から変更することができません。有効期限をあまり長い時間にしてしまうと、悪用されてしまう危険も増してしまいます。そこで、もうひとつ追加された便利な機能がこちらのセッションの強制切断機能です。
まずは、ADFS経由でログインしておきます。このユーザは現状必要なアクセス権限を持っているものとします。
ここで、管理用アカウントでAWS Management Consoleでログインして、ADFSからマッピングされたIAMロールを選択し、セッションの無効化タブから、"アクティブなセッションの無効化"をクリックします。
適用されるポリシーは下記の通りです。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "*" ], "Resource": [ "*" ], "Condition": { "DateLessThan": { "aws:TokenIssueTime": "[policy creation time]" } } } ] }
ここで、ADFS経由でログインしたユーザはどうなるのでしょうか?セッションは切断されないのですが、一切のリソースへのアクセス権限が無くなってしまいました。
具体的には何が起きているのかと言うと、IAMロール側に下記のようにインラインポリシーが追加されていました。なるほど納得ですね。
このポリシー追加により、AWS Management Consoleセッションに限らず、このIAMロールを利用している全ての一時クレデンシャルにおいて、TokenIssueTime
が設定時刻以前の権限は全て無効となりますのでご注意ください。
Note that this deny policy applies to all users of the specified role, not just those with longer duration console sessions.
Note that this deny policy applies to all users of the specified role, not just those with longer duration console sessions.
まとめ
執筆時点ではAPIベースでのFederationでは、DurationSeconds
の最大値には変更が確認できませんでしたが、FederatedユーザによるSSO利用が更に便利になりました。AWSのアカウント管理で楽をしたい方はぜひ試してみたください。
どこかの誰かのお役に立てば嬉しいです。